package com.aerodynelabs.map; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; /** * A class to store tiles locally on disk. * @author Ethan Harstad * */ public class TileStore { protected static final long LIFETIME = 1210000000l; private File store; public TileStore(String name) { store = new File("tiles/" + name); store.mkdirs(); } protected synchronized void put(Tile tile, BufferedImage image) { String name = TileServer.getTileName(tile); File file = new File(store, name); file.mkdirs(); try { ImageIO.write(image, "png", file); } catch (IOException e) { e.printStackTrace(); } } protected boolean isOld(Tile tile) { String name = TileServer.getTileName(tile); File file = new File(store, name); if(file.exists()) { if(file.lastModified() > System.currentTimeMillis() - LIFETIME) return false; } return true; } protected synchronized BufferedImage get(Tile tile) { String name = TileServer.getTileName(tile); File file = new File(store, name); if(!file.exists()) return null; BufferedImage image; try { image = ImageIO.read(file); } catch (IOException e) { image = null; e.printStackTrace(); } return image; } }